import { NextRequest, NextResponse } from 'next/server'
import { prisma } from '@/lib/db'
import { getUserFromRequest } from '@/lib/auth'

// 删除任务
export async function DELETE(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const user = getUserFromRequest(request)
    
    if (!user) {
      return NextResponse.json(
        { error: '未授权访问' },
        { status: 401 }
      )
    }

    const taskId = parseInt(params.id)
    
    if (isNaN(taskId)) {
      return NextResponse.json(
        { error: '无效的任务ID' },
        { status: 400 }
      )
    }

    // 检查任务是否存在
    const task = await prisma.extractionTask.findUnique({
      where: { id: taskId }
    })

    if (!task) {
      return NextResponse.json(
        { error: '任务不存在' },
        { status: 404 }
      )
    }

    // 检查权限（只有创建者或管理员可以删除）
    if (task.createdBy !== user.id && user.role !== 'admin') {
      return NextResponse.json(
        { error: '无权限删除此任务' },
        { status: 403 }
      )
    }

    // 检查任务状态，运行中的任务不能删除
    if (task.status === 'running') {
      return NextResponse.json(
        { error: '运行中的任务不能删除，请先停止任务' },
        { status: 400 }
      )
    }

    // 删除任务（级联删除执行记录）
    await prisma.extractionTask.delete({
      where: { id: taskId }
    })

    return NextResponse.json({
      message: '任务删除成功'
    })

  } catch (error) {
    console.error('Delete task error:', error)
    return NextResponse.json(
      { error: '删除任务失败' },
      { status: 500 }
    )
  }
}

// 获取单个任务详情
export async function GET(
  request: NextRequest,
  { params }: { params: { id: string } }
) {
  try {
    const user = await getUserFromRequest(request)

    if (!user) {
      return NextResponse.json(
        { error: '未授权访问' },
        { status: 401 }
      )
    }

    const taskId = parseInt(params.id)
    
    if (isNaN(taskId)) {
      return NextResponse.json(
        { error: '无效的任务ID' },
        { status: 400 }
      )
    }

    const task = await prisma.extractionTask.findUnique({
      where: { id: taskId },
      include: {
        creator: {
          select: {
            username: true,
            email: true
          }
        },
        executions: {
          orderBy: { createdAt: 'desc' },
          select: {
            id: true,
            status: true,
            startedAt: true,
            completedAt: true,
            videosFound: true,
            videosExtracted: true,
            errorMessage: true,
            logs: true,
            createdAt: true
          }
        }
      }
    })

    if (!task) {
      return NextResponse.json(
        { error: '任务不存在' },
        { status: 404 }
      )
    }

    return NextResponse.json({
      task
    })

  } catch (error) {
    console.error('Get task detail error:', error)
    return NextResponse.json(
      { error: '获取任务详情失败' },
      { status: 500 }
    )
  }
}
